/*
 * 文件名：CarBillDao.java 版权：Copyright by www.huawei.com 描述： 修改人：Administrator 修改时间：2016年4月12日 跟踪单号：
 * 修改单号： 修改内容：
 */

package com.zcsy.manage.persistence.property;


import java.util.List;

import com.zcsy.manage.model.property.CarBill;
import com.zcsy.manage.model.property.CarBillDetail;


/**
 * @Title: CarBillDao.java
 * @Package： com.zcsy.manage.persistence.property
 * @Description: 停车费账单管理Dao层
 * @author xujl
 * @Copyright: 2015 武汉中财数元信息技术有限公司 All rights reserved.
 * @date 2016年4月19日
 * @version 1.0
 * @see JDK1.7.0_75
 * @since
 */
public interface CarBillDao {
    /**
     * @Description 插入停车费信息<br>
     * @param record
     *            停车费对象
     * @return 1：插入成功；0：插入失败
     * @author xujl
     * @date 2016年4月14日
     * @see
     */
    int insert(CarBill record);

    /**
     * @Description 更新停车费信息<br>
     * @param record
     *            停车费对象
     * @return 1：更新成功；0：更新失败
     * @author xujl
     * @date 2016年4月14日
     * @see
     */
    int updateByPrimaryKey(CarBill record);

    /**
     * @Description 根据主键删除停车费信息<br>
     * @param id
     *            主键id
     * @return 1：删除成功；0：删除失败
     * @author xujl
     * @date 2016年4月14日
     * @see
     */
    int deleteByPrimaryKey(String id);

    /**
     * @Description 根据主键获取停车费缴费信息详情<br>
     * @param id
     *            主键id
     * @return 停车费对象
     * @author xujl
     * @date 2016年4月14日
     * @see
     */
    CarBill selectByPrimaryKey(String id);

    /**
     * @Description 根据关键字获取停车费缴费信息列表<br>
     * @param record
     *            停车费缴费对象
     * @return 停车费缴费列表
     * @author xujl
     * @date 2016年4月14日
     * @see
     */
    List<CarBill> selectByKeyword(CarBill record);

    /**
     * @Description 根据CarNo获取最后一条停车费缴费信息<br>
     * @param CarNo
     *            车牌号
     * @return 停车费对象
     * @author yangfan
     * @date 2016年6月30日
     * @see
     */
    CarBill selectByCarNo(String carNo);
    
    /**
     * @Method: selectCarBillByHouseId
     * @Description 根据房屋id查询所有账单详情
     * @param userId
     * @return 账单详情
     * @author liuziyu liuziyuwri@foxmail.com
     * @date 2016年6月30日
     * @see 
     * 
     * modified by hubing 20160831
     * reason: 根据当前登录人查询所绑定车辆的缴费信息
     */
    List<CarBillDetail> selectCarBillByHouseId(String userId);
    
    /**
     * @Method: selectCarBillByOneHouseId
     * @Description 根据一个房屋id数组查询车牌
     * @param housesID
     * @return 账单详情
     * @author liuziyu liuziyuwri@foxmail.com
     * @date 2016年6月30日
     * @see 
     */
    List<CarBill> selectCarBillByOneHouseId(String housesId);
    
    /**
     * @Method: selectByBindingCarNo
     * @Description 根据车牌号查询绑定了的房屋
     * @param carNo
     * @return 账单详情
     * @author liuziyu liuziyuwri@foxmail.com
     * @date 2016年7月18日
     * @see 
     */
    CarBill selectByBindingCarNo(String carNo);
    
    /**
     * @Method: selectByBindingCarNo
     * @Description 根据车牌号查询未绑定的房屋
     * @param carNo
     * @return 账单详情
     * @author liuziyu liuziyuwri@foxmail.com
     * @date 2016年7月18日
     * @see 
     */
    CarBill selectByUnbundingCarNo(String carNo);
    
    /**
     * @Method: updateBindingState
     * @Description 根据主键id更新绑定状态
     * @param id
     * @return 1：成功 0：失败
     * @author liuziyu liuziyuwri@foxmail.com
     * @date 2016年7月18日
     * @see 
     */
    int updateBindingState(String id);
    
    /**
     * @Method: updateStateByHouseIdAndCarNo
     * @Description 根据houseId和CarNo更新绑定状态
     * @param record
     * @return 1：成功 0：失败
     * @author yangfan 373188993@qq.com
     * @date 2016年7月18日
     * @see 
     */
    int updateStateByCarNo (CarBill record);
    
    List<CarBill> selectCarByCellId(CarBill record);
    
    /**
     * 查询用户当前小区下所绑定的车辆信息
     * @Method: selectCarListByOwnerAndHouser
     * @param ownerId  业主Id
     * @param houserId 房屋Id
     * @author hubing
     * @date 2016年9月12日
     */
    List<CarBill> selectCarListByOwnerAndHouser(String ownerId, String houserId);

	/**
	 * @Description 根据多个房屋id查询停车费房屋关联信息数量
	 * @param houseIDs 多个房屋id
	 * @return 停车费房屋关联信息条数
	 * @author liuying 1075817474@qq.com
	 * @date 2016年9月13日
	 * @see 
	 */
	Integer selectByHouseIds(String[] houseIDs);
}
